Package gwtappcontainer.server.apis.admin

Source Code of gwtappcontainer.server.apis.admin.AdminAPI

package gwtappcontainer.server.apis.admin;

import gwtappcontainer.server.apis.admin.Roles.Role;
import gwtappcontainer.server.apps.APIBase;
import gwtappcontainer.server.apps.APIException;
import gwtappcontainer.shared.apis.APIResponse;
import gwtappcontainer.shared.apis.APIResponse.Status;
import gwtappcontainer.shared.apis.admin.RoleProp;
import gwtappcontainer.shared.apis.admin.UserProp;

import java.util.List;

import javax.inject.Named;

import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.ApiMethod.HttpMethod;
import com.google.appengine.api.users.User;

@Api (name = "admin",
  scopes = { "https://www.googleapis.com/auth/userinfo.email" }
)
public class AdminAPI extends APIBase
     
  @ApiMethod(httpMethod = HttpMethod.GET, path = "listroles")
  public APIResponse getAllRoles() {
   
    try {
      RoleRepository repository = new RoleRepository();
      List<RoleProp> allProps = repository.getAllRoles();
     
      APIResponse resp = new APIResponse();
     
      resp.object = allProps;
      resp.statusCode = Status.SUCCESS;
     
      if (0 == allProps.size())
        resp.userFriendlyMessage = "No roles available";
           
      return resp;
     
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }
   
  @ApiMethod(path = "addrole", httpMethod = HttpMethod.GET)
  public APIResponse addRole(@Named("role") String role, User user) {
   
    try {
      //only allowed for developers
      ensureRole(user, Role.DEVELOPER);
                                 
      RoleRepository repository = new RoleRepository();
     
      RoleProp prop = repository.addRole(role);
     
      APIResponse resp = new APIResponse();
      resp.statusCode = Status.SUCCESS;
      resp.object = prop;     
      return resp;
   
    } catch(Exception ex)  {
      return new APIResponse(ex);
    }
  }
 
 
  @ApiMethod(path = "renamerole", httpMethod = HttpMethod.PUT)
  public APIResponse renameRole(@Named("existing_name") String existingName,
      @Named("new_name") String newName, User user) {
   
    try {
   
      //only allowed for developers
      ensureRole(user, Role.DEVELOPER);     
                     
      RoleRepository repository = new RoleRepository();
      RoleProp prop = repository.updateRole(existingName, newName);
     
      APIResponse resp = new APIResponse();
      resp.statusCode = Status.SUCCESS;
      resp.object = prop;
      return resp;
   
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  } 
 
  @ApiMethod(path = "deleterole", httpMethod = HttpMethod.DELETE)
  public APIResponse deleteRole(@Named("role") String role, User user) {
   
    try {
      ensureRole(user, Role.DEVELOPER);
                     
      RoleRepository repository = new RoleRepository();
      repository.deleteRole(role);
     
      APIResponse resp = new APIResponse();
      resp.statusCode = Status.SUCCESS;
     
      return resp;
   
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }
 
  @ApiMethod(path = "getloggedinemail", httpMethod = HttpMethod.GET)
  public APIResponse getLoggedInEmail(User user) {   
    try {
      APIResponse resp = new APIResponse();
     
      resp.object = "not logged in";   
      if (null != user)
        resp.object = user.getEmail();
     
      return resp;
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }
 
  @ApiMethod(path = "getrolesforuser", httpMethod = HttpMethod.GET)
  public APIResponse getRolesForUser(@Named("email") String email) {   
    try {                         
     
      UserRepository repository = new UserRepository();
      email = email.toLowerCase();
      UserProp prop = repository.getUserByEmail(email);
     
      APIResponse resp = new APIResponse();
     
      if (null == prop) {
        resp.statusCode = Status.ERROR_INVALID_USER;
        resp.object = "[" + email + "] is not set up as a user";
        return resp;
      }
           
      resp.statusCode = Status.SUCCESS;
      resp.object = prop;
     
      return resp;
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }
 
  @ApiMethod(path = "getrolesforloggedinuser", httpMethod = HttpMethod.GET)
  public APIResponse getRolesForLoggedInUser(User user) {   
    try {                   
      if (user == null) {
        throw new APIException(Status.ERROR_LOGIN_REQUIRED, "Login required");
      }
     
      String email = user.getEmail();
      APIResponse resp = getRolesForUser(email);
             
      return resp;
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }
 
  @ApiMethod(httpMethod = HttpMethod.GET, path = "listusers")
  public APIResponse getAllUsers() {
    try {
      UserRepository userRepository = new UserRepository();
      List<UserProp> allProps = userRepository.getAllUsers();
     
      if (0 == allProps.size()) {
        throw new APIException(Status.ERROR_RESOURCE_DOES_NOT_EXIST, "No users available");       
      }
     
      APIResponse resp = new APIResponse();
      resp.statusCode = Status.SUCCESS;
      resp.object = allProps;
     
      return resp;
     
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }
 
  @ApiMethod(path = "adduser", httpMethod = HttpMethod.PUT)
  public APIResponse addUser(@Named("email") String email, User user) {       
   
    try {
      //only PORTAL_ADMIN can add user
      ensureRole(user, Role.PORTAL_ADMIN);     
                     
      UserRepository repository = new UserRepository();
      UserProp prop = repository.addUser(email);
     
      APIResponse resp = new APIResponse();
      resp.statusCode = Status.SUCCESS;
      resp.object = prop;
      return resp;
     
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }
 
  @ApiMethod(path = "assignrole", httpMethod = HttpMethod.PUT)
  public APIResponse assignRoleToUser(@Named("email") String email,
      @Named("role") String role, User user) { 
    try {   
      ensureRole(user, Role.PORTAL_ADMIN);           
           
      UserRepository repository = new UserRepository();
      UserProp prop = repository.changeUserPermission(email, role, true);
     
      return new APIResponse(Status.SUCCESS, prop);
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }   
 
  @ApiMethod(path = "unassignrole", httpMethod = HttpMethod.PUT)
  public APIResponse unassignRoleToUser(@Named("email") String email,
      @Named("role") String role, User user) { 
   
    try
      ensureRole(user, Role.PORTAL_ADMIN);
      //GateKeeper.throwExceptionIfNeitherPortalAdminNorDeveloper(user);
           
      UserRepository repository = new UserRepository();
      UserProp prop = repository.changeUserPermission(email, role, false);
     
      return new APIResponse(Status.SUCCESS, prop);
     
    } catch (Exception ex) {
      return new APIResponse(ex);
    }
  }       
}
TOP

Related Classes of gwtappcontainer.server.apis.admin.AdminAPI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.